`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date:    11:28:13 03/31/2022 
// Design Name: 
// Module Name:    openmips_min_sopc 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
`include "define.v"
module openmips_min_sopc(
	input wire clk,
	input wire rst
    );
	 
	 wire[`InstAddrBus] inst_addr;
	 wire[`InstBus] inst;
	 wire rom_ce;
	 
	 wire[`RegBus] ram_addr_o;
	 wire[`RegBus] ram_data_o;
	 wire[3:0]ram_sel_o;
	 wire ram_we_o;
	 wire ram_ce_o;
	 wire[`RegBus]ram_data_i;
	 openmips openmips0(
		.clk(clk),.rst(rst),
		.rom_addr_o(inst_addr),.rom_data_i(inst),
		.rom_ce_o(rom_ce),
		.ram_data_i(ram_data_i),

		.ram_addr_o(ram_addr_o),
		.ram_data_o(ram_data_o),
		.ram_sel_o(ram_sel_o),
		.ram_we_o(ram_we_o),
		.ram_ce_o(ram_ce_o)
	 );
	 
	 inst_rom inst_rom0(
		.ce(rom_ce),
		.addr(inst_addr),.inst(inst)
	 );
	 
	 data_ram data_ram0(
		.addr(ram_addr_o),
		.data_i(ram_data_o),
		.sel(ram_sel_o),
		.we(ram_we_o),
		.ce(ram_ce_o),
		.clk(clk),
		.data_o(ram_data_i)
	 );


endmodule
